#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"patient.h"

void menu_patient ()
{
patient *p;
patient p1;
char fichier_patient[MAX];
int i,test;


printf("1: enregistrer_patient \n");
printf("2:liste_patient \n");
printf("3:rechercher_patient \n");
printf("4:supprimer_patient \n");
printf("taper autre bouton pour quitter menu \n");



printf ("donner votre choix \n");
scanf("%d",&i);

switch (i){
case 1:enregistrer_patient (p1) ;
menu_patient();
break;
case 2:liste_patient(p1);
menu_patient();
break;
case 3:rechercher_patient(p1);
menu_patient();
break;
case 4:supprimer_patient(&p1);
menu_patient();
break;

default :break;
}
}


void ajouter_patient(patient *p)
{
printf(" donner l'identifiant du patient \n");
scanf("%s",(*p).identifiant);
printf(" donner le nom du patient \n");
scanf("%s",(*p).nom);
printf(" donner le prenom du patient \n");
scanf("%s",(*p).prenom);
printf(" donner l'age du patient \n");
scanf("%d",&(*p).age);
printf(" donner cin du patient \n");
scanf("%ld",&(*p).cin);
printf(" donner le sexe du patient \n");
scanf("%s",(*p).sexe);
printf(" donner l'etat du patient \n");
scanf("%s",(*p).etat);
printf("Le jour");
scanf("%d",&(*p).jour);
printf("Le mois");
scanf("%d",&(*p).mois);
printf("L'annee");
scanf("%d",&(*p).annee);

}





void enregistrer_patient(patient p)
{int a;
a=rechercher_patient(p);
if (a) 
{printf("la personne existe deja dans la base de données \n");}
else {


char chemin[]="fichiers_patients.txt";
FILE *f;
f=fopen(chemin,"a");
if(f==NULL)
{
printf("\n Impossible d'ouvrir le fichier\n");
}

else
{
ajouter_patient(&p);
fprintf(f,"%s %s %d %ld %s %s %s %d %d %d\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee);
}


fclose(f);
}
}


void liste_patient(patient p )
{
char chemin[]="fichiers_patients.txt";

FILE *f;


f=fopen(chemin,"r");
if(f==NULL){
printf("\nImpossible\n");
}else{
while( fscanf(f,"%s %s %d %ld %s %s %s %d %d %d",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee) != EOF)
{

printf("\n Nom : %s",p.nom);
printf("\n prenom : %s",p.prenom);
printf("\n age : %d",p.age);
printf("\n cin : %ld",p.cin);
printf("\n sexe : %s",p.sexe);
printf("\n l'identifiant du patient : %s",p.identifiant);
printf("\n l'etat du patient : %s",p.etat);
printf("\n le jour d'entrée: %d",p.jour);
printf("\n le mois d'entrée: %d",p.mois);
printf("\n l'année d'entrée: %d\n",p.annee);
}
}
fclose(f);
}


int rechercher_patient(patient p)
{
char chemin[]="fichiers_patients.txt";
FILE *f;
int t=0;
char id[20];

f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{
printf("\nsaisir id\n");
scanf("%s",id);
while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee)!=EOF  )
{

if(strcmp(id,p.identifiant)==0){
t=1;
printf ("\n%s %s %d %ld %s %s %s %d %d %d\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee);
break;
}
}
if(t==0)printf("\n no match\n");


fclose(f);
return(t);
}
}


void supprimer_patient (patient *p)
{int a,t;
char id[100];
FILE *f1,*f2;
char chemin[]="fichiers_patients.txt";
char temp[]="temp.txt";


f1=fopen(chemin,"r");
f2=fopen(temp,"w");
if(f1==NULL||f2==NULL)
printf("\n Impossible d'ouvrir le fichier \n");

else{
t=0;
do{
printf("\ndonner id\n");
scanf("%s",id);
rewind(f1);


while(fscanf(f1,"%s %s %d %ld %s %s %s %d %d %d",p->nom,p->prenom,&p->age,&p->cin,p->sexe,p->identifiant,p->etat,&p->jour,&p->mois,&p->annee)!=EOF ){
 if(strcmp(p->identifiant,id)==0){
t=1 ;
break;}
}
}while(t==0);
printf("%d",t);
rewind(f1);

while (fscanf(f1,"%s %s %d %ld %s %s %s %d %d %d",p->nom,p->prenom,&p->age,&p->cin,p->sexe,p->identifiant,p->etat,&p->jour,&p->mois,&p->annee)!=EOF ){

    if (strcmp(p->identifiant,id) != 0)
   fprintf (f2,"%s %s %d %ld %s %s %s %d %d %d\n",p->nom,p->prenom,p->age,p->cin,p->sexe,p->identifiant,p->etat,p->jour,p->mois,p->annee);
}
fclose(f1);
fclose(f2);
remove(chemin);
rename(temp,chemin);
printf("\ndone!\n");
}
}
